AlexaでGoogleとアカウントリンクしてみた
はじめに
Alexaでは、アカウントリンクと呼ばれる仕組みを利用することで、別システムのユーザーとスキルのユーザーを紐付けることができます。
今回は、Google APIsを使って、GoogleアカウントとAlexaをリンクさせてみました。
認証情報の作成
Googleアカウントでアカウントリンクするために、まず認証情報を作成します。
Google APIsコンソールを開いて、鍵アイコンを選択します。
(プロジェクトを作成するように促される場合は、新規にプロジェクトを作成してください)
「認証情報を作成」を選択して、「OAuth クライアント ID」を選択します。
クライアントIDの作成画面が表示されます。
- アプリケーションの種類 -> 「ウェブアプリケーション」を選択
- 名前 -> クライアントIDの名前を入力
- 承認済みのリダイレクト URI -> スキルの開発コンソールにて表示される「Redirect URLs」(下記参照)を全て入力します。
入力後、「作成」を選択すればOAuthクライアントIDが発行されます。
次に、「OAuth同意画面」タブを選択し、サービス名を入力して保存します。
(OAuthを有効にするために、必ずサービス名を入力する必要があります)
最後に、アクセスするサービスのAPIを有効にします。
「ライブラリ」を選択し、対象のサービスを選びます。今回は「Google Calendar API」を有効にしてみます。
スキルのアカウントリンク設定
開発者コンソールでスキルのアカウントリンク設定を行います。
「Build」タブ内の「Account Linking」を選択します。
各設定項目について、以下のように入力し保存します。
- Authorization URL -> https://accounts.google.com/o/oauth2/auth?access_type=offline&approval_prompt=force
- Client Id -> 発行したクライアントID
- Scope -> https://www.googleapis.com/auth/calendar.readonly
- Authorization -> Auth Code Grant
- Access Token URI -> https://accounts.google.com/o/oauth2/token
- Client Secret -> 発行したクライアントシークレット
- Client Authentication Scheme -> HTTP Basic (Recommended)
他、呼び出し名やエンドポイントの設定など、最低限スキルが起動/テストできる状態にしておきます。
アカウントリンクの有効化
Alexaアプリでスキルのアカウントリンクを有効にします。
アクセス許可画面が開くので、「許可」を選択。
以下の画面が開けば、アカウントリンクは成功です。
アクセストークンの確認
開発者コンソールのテストでスキルを起動し、アクセストークンが取得できることを確認します。
JSON Inputで取得できるアクセストークンを使用して、サービスにアクセスできることを確認してみます。
参考
$ curl -X GET -H "Authorization:Bearer (取得したトークン)" https://www.googleapis.com/calendar/v3/calendars/primary/events?timeMin=2018-03-01T10:00:00Z { "kind": "calendar#events", "etag": "\"xxx\"", "summary": "(アカウントリンクしたメールアドレス)", "updated": "2018-03-05T02:53:47.152Z", "timeZone": "Asia/Tokyo", "accessRole": "owner", "defaultReminders": [ { "method": "popup", "minutes": 30 } ], "nextSyncToken": "xxx=", "items": [ { "kind": "calendar#event", "etag": "\"xxx\"", "id": "xxx", "status": "confirmed", "htmlLink": "https://www.google.com/calendar/event?eid=xxx", "created": "2018-02-26T02:53:20.000Z", "updated": "2018-02-26T02:53:36.187Z", "summary": "めそ子とデート", (以下略) } }
問題なくアクセスできていますね。
おわりに
Googleアカウントとアカウントリンクし、Googleのサービスにアクセスしてみました。
カレンダーだけでなく色々なAPIが用意されているので、Googleのサービスを利用した有用なスキルが作れそうですね。
なお、Googleカレンダーはデフォルトの機能でAlexaと連携することができます。。
【公式】Alexaにカレンダーをリンクする
それでは。
参考
- [Alexa] Microsoft Graph にアカウントリンクしてみました 〜AlexaでOffice 365を操作するために〜
- [Alexa] Account Linking を使用してスキルからFacebookに投稿してみました
- [Alexa] Login with Amazon との Account Linking で名前を呼びかける挨拶とかメールを送信するスキルを作ってみました
- [Alexa] LINEログインでAccount Linkingしてみた
- OAuth認証でGoogle Calendar APIに接続する(python編)
- Using OAuth 2.0 for Web Server Applications